package com.mapper;

import com.github.pagehelper.Page;
import com.pojo.CheckGroup;
import com.pojo.CheckItem;
import com.pojo.Setmeal;
import com.pojo.SetmealExample;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface SetmealMapper {

    //热门套餐详情
    List<Map<String,Object>> getHotSetmeal();

    //查询套餐占比
    List<Map<String,Object>> getSetmealReport();

    //第一种联合查询:查询该套餐对应的数据以及该套餐下的检查组+检查项
    Setmeal queryDetailById(Integer id);
    //第二种嵌套查询:查询该套餐对应的数据以及该套餐下的检查组+检查项
    Setmeal queryDetailByIdTwo(Integer id);


    //第三种java代码实现
    //通过套餐id查询检查组
    List<CheckGroup> queryBySetMealId(Integer id);
    //通过检查组id查询检查项
    List<CheckItem> queryByCheckGroupId(Integer id);



    //第三方表插入数据
    void addSetmealAndCheckGroup(@Param("SetmealId") Integer SetmealId,@Param("ItemIds") Integer [] ItemIds);
    //查询该套餐对应的检查组id
    Integer [] queryByCheckGroup(Integer SetmealId);
    //删除第三方表该套餐对应的数据
    void deleteBySetMeal(Integer SetmealId);

    //删除之前先看看该套餐里面有没有引用检查组
    Integer isUseInSemeal(Integer SetmealId);
    //删除之前先看看订单里面有没有引用该套餐
    Integer isUseInOrder(Integer SetmealId);

    //如果有引用检查组，先解散和检查组的关系
    void deleteSetMealCheckGroupBySetMealId(Integer SetmealId);

    long countByExample(SetmealExample example);

    int deleteByExample(SetmealExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Setmeal record);

    int insertSelective(Setmeal record);
    //查询所有带分页+条件
    Page<Setmeal> selectByQueryString(String queryString);
    List<Setmeal> selectByExample(SetmealExample example);

    Setmeal selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Setmeal record, @Param("example") SetmealExample example);

    int updateByExample(@Param("record") Setmeal record, @Param("example") SetmealExample example);

    int updateByPrimaryKeySelective(Setmeal record);

    int updateByPrimaryKey(Setmeal record);
}